﻿// AtlContain.h: CAtlContain 的声明

#pragma once
#include "resource.h"       // 主符号



#include "AtlTest_i.h"
#include "AtlObject.h"



#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Windows CE 平台(如不提供完全 DCOM 支持的 Windows Mobile 平台)上无法正确支持单线程 COM 对象。定义 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA 可强制 ATL 支持创建单线程 COM 对象实现并允许使用其单线程 COM 对象实现。rgs 文件中的线程模型已被设置为“Free”，原因是该模型是非 DCOM Windows CE 平台支持的唯一线程模型。"
#endif

using namespace ATL;


// CAtlContain

class ATL_NO_VTABLE CAtlContain :
    //public CComObjectRootEx<CComSingleThreadModel>,
    //public CComCoClass<CAtlContain, &CLSID_AtlContain>,
    public IDispatchImpl<IAtlContain, &IID_IAtlContain, &LIBID_AtlTestLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
    public CAtlObject
{
public:
    CAtlContain()
    {
    }

    DECLARE_REGISTRY_RESOURCEID(107)

    //
    //  public:
	//      typedef ATL::CComCreator2< ATL::CComCreator< ATL::CComObject< x > >, ATL::CComCreator< ATL::CComAggObject< x > > > _CreatorClass;
    //

	DECLARE_AGGREGATABLE(CAtlContain)

    BEGIN_COM_MAP(CAtlContain)
        COM_INTERFACE_ENTRY(IAtlContain)
        COM_INTERFACE_ENTRY_IID(IID_IDispatch, IAtlContain)

    //
    //  {
    //      &_ATL_IIDOF(x),
    //      NULL,
    //      _NoInterface
    //  },
    //

        COM_INTERFACE_ENTRY_NOINTERFACE(IAtlObject) //  放在前面
        COM_INTERFACE_ENTRY_CHAIN(CAtlObject)
    END_COM_MAP()

    DECLARE_GET_CONTROLLING_UNKNOWN()

    DECLARE_PROTECT_FINAL_CONSTRUCT()

    HRESULT FinalConstruct()
    {
        return S_OK;
    }

    void FinalRelease()
    {
    }

public:
};

OBJECT_ENTRY_AUTO(__uuidof(AtlContain), CAtlContain)
